using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.ModelConfiguration;
using SILAS.Entidades;

namespace SILAS.DAO.Mapping
{
    public class FuenteAguaMap : EntityTypeConfiguration<FuenteAgua>
    {
        public FuenteAguaMap()
        {
            // Primary Key
            this.HasKey(t => t.Id);

            // Properties
            this.Property(t => t.Denominacion)
                .HasMaxLength(50);

            this.Property(t => t.Duenio)
                .HasMaxLength(50);

            // Table & Column Mappings
            this.ToTable("FuenteAgua");
            this.Property(t => t.Id).HasColumnName("IdFuenteAgua");
            this.Property(t => t.Denominacion).HasColumnName("Denominacion");
            this.Property(t => t.Caudal).HasColumnName("Caudal");
            this.Property(t => t.Duenio).HasColumnName("Duenio");
            this.Property(t => t.IdTipoFuente).HasColumnName("IdTipoFuente");
            this.Property(t => t.IdUbicacion).HasColumnName("IdUbicacion");

            // Relationships
            this.HasMany(t => t.SAPs)
                .WithMany(t => t.FuenteAguas)
                .Map(m =>
                    {
                        m.ToTable("SAPFuenteAgua");
                        m.MapLeftKey("IdFuenteAgua");
                        m.MapRightKey("IdSAP");
                    });

            this.HasOptional(t => t.TipoFuenteAgua)
                .WithMany(t => t.FuenteAguas)
                .HasForeignKey(d => d.IdTipoFuente);
            this.HasOptional(t => t.Ubicacion)
                .WithMany(t => t.FuenteAguas)
                .HasForeignKey(d => d.IdUbicacion);

        }
    }
}
